package com.mujin.keji.collectionsystem.module.tripplan.viewmodel;

import android.arch.lifecycle.LiveData;
import android.arch.lifecycle.ViewModel;

import com.mujin.keji.collectionsystem.base.BaseDto;
import com.mujin.keji.collectionsystem.module.tripplan.dto.PathPlanDto;
import com.mujin.keji.collectionsystem.module.tripplan.dto.QueryPlanDetailListDto;
import com.mujin.keji.collectionsystem.module.tripplan.dto.QueryPlanListDto;
import com.mujin.keji.collectionsystem.module.tripplan.respository.IPlanRespository;
import com.mujin.keji.collectionsystem.module.tripplan.respository.IQueryPlanDetailRespository;
import com.mujin.keji.collectionsystem.module.tripplan.respository.IQueryPlanRespository;
import com.mujin.keji.collectionsystem.module.tripplan.respository.PlanRespository;
import com.mujin.keji.collectionsystem.module.tripplan.respository.QueryPlanDetailRespository;
import com.mujin.keji.collectionsystem.module.tripplan.respository.QueryPlanRespository;
import com.mujin.keji.collectionsystem.module.tripplan.vo.PathPlanVo;
import com.mujin.keji.collectionsystem.module.tripplan.vo.QueryPlanDetailVo;
import com.mujin.keji.collectionsystem.module.tripplan.vo.QueryPlanVo;

/**
 * 行程规划viewmodel
 *
 * @author weishixiong
 * @Time 2018-05-16
 */
public class TripPlanViewModel extends ViewModel {
    /**
     * 行程规划详情
     */
    private LiveData<BaseDto<QueryPlanDetailListDto>> planDetailLiveData;
    /**
     * 行程规划列表
     */
    private LiveData<BaseDto<QueryPlanListDto>> liveData;
    /**
     * 行程规划
     */
    private LiveData<BaseDto<PathPlanDto>> pathPlanDtoliveData;


    private IQueryPlanRespository queryPlanRespository;

    private IPlanRespository planRespository;

    private IQueryPlanDetailRespository queryPlanDetailRespository;

    /**
     * 获取路线规划列表
     *
     * @return
     */
    public LiveData<BaseDto<QueryPlanListDto>> queryPlan() {
        query();
        return this.liveData;
    }

    /**
     * 查询路线规划列表
     */
    private void query() {
        queryPlanRespository = new QueryPlanRespository();
        this.liveData = queryPlanRespository.queryPlan(new QueryPlanVo());
    }


    /**
     * 路线规划
     *
     * @param location
     * @return
     */
    public LiveData<BaseDto<PathPlanDto>> pathPlan(String location) {
        plan(location);
        return this.pathPlanDtoliveData;
    }

    /**
     * 路线规划
     */
    private void plan(String location) {
        planRespository = new PlanRespository();
        this.pathPlanDtoliveData = planRespository.pathPlan(new PathPlanVo(location));
    }

    /**
     * 获取路线规划详情
     *
     * @return
     */
    public LiveData<BaseDto<QueryPlanDetailListDto>> queryPlanDetail(Integer planId) {
        queryPlanDetailRespository = new QueryPlanDetailRespository();
        this.planDetailLiveData = queryPlanDetailRespository.queryDetail(new QueryPlanDetailVo(planId));
        return this.planDetailLiveData;
    }

}

